#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n;
int q[N];

// template <typename T>
void quick_sort(int q[] , int l, int r){
    // 边界  
    if(l >= r) return; // 由小到大排序
    int x = q[(l + r + 1)/2], i = l - 1, j = r + 1;     // 这里边界问题若用 l则下方（1）递归边界不可用l
    while(i < j){
        do i ++; while(q[i] < x);
        do j --; while(q[j] > x);
        if(i < j){
            int t = q[i];
            q[i] = q[j];
            q[j] = t;
        }
    }
    quick_sort(q, l, i - 1);    //（1）
    quick_sort(q, i , r);
 }

int main(){
    cin >> n;
    for(int i = 0; i < n; i++) cin >> q[i];
    quick_sort(q, 0, n - 1);
    for(int i = 0; i < n; i++) cout << q[i] << " ";
    return 0;
}